package org.jeecg.modules.fk.utils;

import cn.hutool.core.lang.Dict;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import cn.hutool.extra.template.engine.freemarker.FreemarkerEngine;

import java.util.Map;

/**
 * FreeMarker 模板工具类
 */
public class FreeMarkerUtil {
    private static TemplateEngine engine = null;

    static {
        //自动根据用户引入的模板引擎库的jar来自动选择使用的引擎
        //TemplateConfig为模板引擎的选项，可选内容有字符编码、模板路径、模板加载方式等，默认通过模板字符串渲染
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setCustomEngine(FreemarkerEngine.class);
        engine = TemplateUtil.createEngine(templateConfig);
    }

    /**
     * 解析模板内容
     *
     * @param templateContent 模板内容
     * @param bindingMap      参数
     * @return
     */
    public static String renderFromStr(String templateContent, Map<String, Object> bindingMap) {
//        //自动根据用户引入的模板引擎库的jar来自动选择使用的引擎
//        //TemplateConfig为模板引擎的选项，可选内容有字符编码、模板路径、模板加载方式等，默认通过模板字符串渲染
//        TemplateEngine engine = TemplateUtil.createEngine(templateConfig);

        //假设我们引入的是Beetl引擎，则：
        Template template = engine.getTemplate(templateContent);
        //Dict本质上为Map，此处可用Map
        String result = template.render(bindingMap);
        //输出：Hello Hutool
        return result;
    }


    public static void main(String[] args) {
        for (int i = 0; i < 20; i++) {
            String template = i + "你好${name" + i + "},hah${ename}";
            int finalI = i;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    String str = VelocityUtil.renderFromStr(template, Dict.create().set("name" + finalI, "Hutool" + finalI));
                    System.out.println(str);
                }
            }).run();
        }

    }

}
